src = $(wildcard ./src/*.c) # src = ./src/test.c ./src/add.c ./src/sub.c ./src/div.c

# 要加上 ./src/ 才能匹配 add，否则就是匹配 add.c 之前的 ./src/
obj = $(patsubst ./src/%.c, ./obj/%.o, $(src)) # obj = ./obj/test.o ./obj/add.o ...

inc_path = ./inc

myArgs = -Wall -g

ALL:a.out

# 链接
a.out:$(obj)
	gcc $^ -o $@ $(myArgs) -I $(inc_path)

# 汇编 预处理阶段头文件展开，所以将头文件写在汇编位置，不用写在链接位置
$(obj):./obj/%.o:./src/%.c
	gcc -c $< -o $@ $(myArgs) -I $(inc_path) 

# 开头的 "-" 表示错误依然执行
clean:
	-rm -rf $(obj) a.out

# 伪目标：不管条件是否满足都会生成文件
.PHONY: clean ALL